package proyectoFC_2_3_3.koyicabuto;

import proyectoFC_2_3_3.koyicabuto.funciones.Funciones;
import proyectoFC_2_3_3.koyicabuto.funciones.FuncionesBaseDatos;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class NuevoGrupoActivity extends Activity{
	
	//Base de Datos
	private SQLiteDatabase gruposDataBase;
	
	//Objeto de la clase de Funciones Genericas
	private Funciones funciones = new Funciones();
	private FuncionesBaseDatos funcionesBaseDatos = new FuncionesBaseDatos();
	
	//Buttons
	private Button botonGuardar;
	
	//EditText
	private EditText nombre;
	private EditText descripcion;
	
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.nuevogrupo);
        
        this.nombre = (EditText)findViewById(R.id.Nombre);
        this.descripcion = (EditText)findViewById(R.id.Descripcion);
        this.botonGuardar = (Button)findViewById(R.id.BotonGuardar);
    }
	
	public void onClickBotonGuardar(View view){
		String nombre = this.nombre.getText().toString();
		String descripcion = this.descripcion.getText().toString();
		
		guardarGrupo(nombre, descripcion, view);
	}
	
	public void onClickBotonVolver(View view){
		Intent i = new Intent(this, ListaGruposActivity.class);
		startActivity(i);
	}
	
	/**
	 * Metodo con el que gurdamos un nuevo grupo y en el caso de que no halla error mostramos un dialogo de corercto.
	 * @param nombre
	 * @param descripcion
	 */
	private void guardarGrupo(String nombre, String descripcion, View view){
		if(validaGuardarGrupo()){
			boolean error = false;
			
			//Obtenemos el telefono del temrinal
			String telefonoTerminal = funciones.obtenerNumeroTelefono(this);
			
			gruposDataBase = funcionesBaseDatos.conectaWritableBaseDeDatos(this); 		
			
			try{
				if(gruposDataBase != null){
					
					//Guardamos el Grupo
					gruposDataBase.execSQL("INSERT INTO GRUPOS (GR_NOMBRE, GR_DESCRIPCION) " +
										   "VALUES('" + nombre + "', '" + descripcion + "')") ;
					
					funcionesBaseDatos.cierraBaseDeDatos(gruposDataBase);
				}
				
			}catch (Exception e) {
				error = true;
				System.out.println("Excepcion al guardar: " +e.getMessage());
			}
			if(!error){
				ocultarTecladoVirtual(view);
				Toast.makeText(this, "Grupo: " + this.nombre.getText().toString() + " almacenado correctamente.", Toast.LENGTH_SHORT).show();
				
				//Una vez hemos guardado el nuevo grupo, volvemos a ListaGruposActivity
				Intent i = new Intent(this, ListaGruposActivity.class);
				startActivity(i);
			}
		}
	}
	
	private boolean validaGuardarGrupo(){
		boolean validado = false;
		boolean error = false;
		
		if(nombre.getText() == null || nombre.getText().toString().isEmpty()){
			funciones.crearDialogoAlerta("Error", "Debe rellenar el campo Nombre.", this);
		}else{
			//Comprobamos que no haya un grupo en la BB:DD con el mismo nombre
			int contador = Integer.valueOf(0);
			String[] parametros = new String[]{nombre.getText().toString()};
			String selectGrupo = "SELECT COUNT(GR_NOMBRE) FROM GRUPOS WHERE UPPER(GR_NOMBRE) = UPPER(?) ";
			gruposDataBase = funcionesBaseDatos.conectaBaseDeDatos(this);
			
			try{
				if(gruposDataBase != null){
					
					Cursor cursor = gruposDataBase.rawQuery(selectGrupo, parametros);

					if(cursor.moveToFirst()){
						do{
							contador = cursor.getInt(0);
						}while(cursor.moveToNext());
					}
					funcionesBaseDatos.cierraBaseDeDatos(gruposDataBase);
				}
				
			}catch (Exception e) {
				validado = false;
				error = true;
			}
			
			if(!error && contador > 0){
				funciones.crearDialogoAlerta("Error", "Ya existe un Grupo cuyo nombre es " + nombre.getText().toString() + ", " +
						 					 "introduzca un nombre diferente para el grupo.", this);
			}else{
				validado = true;
			}
		}		
		return validado;
	}
	
	public void ocultarTecladoVirtual(View view){
		descripcion.clearFocus();
		nombre.clearFocus();
		
		InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
		imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
	}
}
